home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-21
/
wc_dv7a.zip
/
EXCEPT13.TEC
< prev
next >
Wrap
Text File
|
1989-06-02
|
4KB
|
68 lines
Quarterdeck Technical Note
by Bob Perry
EXCEPTION #13
What is "Exception 13?"
What can be done to prevent "Exception 13's?"
Exceptions are unusual or invalid conditions associated
with the execution of a particular instruction by the 80386
processor. The 80386 recognizes several different classes of
exceptions, and assigns a different vector number to each class.
The DESQview-386 memory manager, QEMM-386, has been designed to
capture these 80386 exception vectors and display them directly
to the user.
Exception 13 is the "General Protection Fault" error. Any
privileged instruction or any instruction that references memory
can trigger an Exception 13.
In the first case, privileged instructions, the Exception
13 could indicate that a program has violated the protected mode of
the 80386 by executing a privileged instruction or I/O reference.
Thus, when the prompt, "Terminate, Reboot or Continue?" is issued,
the "Continue" option directs the 80386 to reorder the ranking of
priviliged instructions and the program should continue to execute.
It is the second case, instructions that reference memory,
that are far more common to DESQview 386 (and QEMM-386) users.
Here the exception can indicate that an application has a bug.
It has over-written its memory partition, and may in fact be
running wild, writing code all over the place. This situation
can occur with some programs that were written for use on the
8088 processor and may not be useable in the 80386's virtual 8086
mode. A few other programs may not be compatible with QEMM-386.
All this adds up to mean that when "Terminate, Reboot or
Continue" is displayed, the user can only "Terminate."
For those users who are more technically oriented, this
over-writing of the memory partition generally means that a word
or a double word value of code has been written to the last byte
of a segment. The problem or "bug" in the application program
has to do with wrapping the value to the next segment of memory.
What can the user do to prevent Exception 13's? The
DESQview 386 user can try two things: First, run Change Program
and try to allocate more memory to the application. Second, the
user can try to increase the Protection Level to 3, which will
not alleviate the source of the Exception 13, but may allow the
application to pass more descriptive error messages through to
the user.
When Exception 13's are obtained outside of DESQview they
are either caused by applications written for the 80386 protected
mode or they are not. If the faulting application is written for
protected mode of the 80386, it is likely that this program has
no VCPI (Virtual Control Program Interface). Since QEMM-386 is a
virtual 8086 program, such faulting applications cannot be run
under QEMM without VCPI. The user has no choice but to reboot
without QEMM, and contact the developer of the faulting application
for VCPI support.
If the faulting application was not written for the
protected mode of the '386, the QEMM user is probably using the
RAM parameter (which is necessary to LOADHI drivers and TSR's).
In this case the faulting program may be writing to areas of high
RAM which are already mapped by other code. To correct this
problem, the user may opt to RAM only specific areas of memory,
as described on page 6 of the QEMM manual, rather than issue a
RAM for all mappable areas. Another possible solution to such
memory conflicts might be to use the EXCLUDE parameter (on page 5
of the QEMM manual) for all known ROM's being mapped into RAM.
* * * E N D O F F I L E * * *